Enterprise computing environments are often implemented in decentralized environments, both in terms of software structure and administrative organization, which use large numbers of low-cost server resources to meet processing requirements. For example, thousands of servers or more may operate across multiple data centers. The servers may host services (e.g., business logic applications) that are accessed by processes. To access a given service, a process may transmit a service request to the service and the service may generate a response which includes the requested information. To generate the response, the service may in turn transmit other service requests to other services and underlying data stores. There may be thousands of such services or more and each service may have multiple clients (e.g., other services) spread across the computing infrastructure. Often, services are replicated across multiple hosts in different data centers to improve their scaleability and availability. For example, a given service may be hosted in several different data centers in different geographic locations in order to avoid a single point of failure.
To manage such systems, it is desirable for a computing infrastructure to enable clients to discover services in a seamless way, route service requests to hosts in a reliable manner, and/or permit services to add capacity easily and transparently. Providing request routing systems that meet such goals has proven challenging, particularly in systems that may experience host failures and network partitions. However, meeting such goals may permit the business objectives of the computing infrastructure to be achieved more effectively and efficiently.
Accordingly, an ongoing need exists for improved systems and methods that may be used to route service requests. It should be noted that, while certain advantages and features are described, the teachings herein may be used to implement systems and methods that do not have any of the advantages and features, but rather which have other advantages and features.